جابه جایی سطر و ستون در Sql Server
سلام
من یه جدولی دارم که شامل 3 تا ستون هست.
- ستون اول ID
- ستون دوم نام شیفتهای کاری
- ستون سوم هم تاریخ شیفتهای کاری
کویری من هم به این صورت هست :
select id,shamsiDate,shiftDesc from Plane_Tbl
اطلاعاتی که جدول نمایش میده به صورت زیر هست :

حالا کویری لازم دارم که اطلاعات موجود در سطرها رو به صورت ستون نمایش بده. یعنی اینکه یک کویری شامل 5 تا ستون باشه.
یک ستون تاریخ رو نمایش بده و چهار ستون بعدی هم A و B و C و D باشه که جلوش نمایش بده آیا در اون روز اون شیفت وجود داره یا خیر
پاسخ هوش مصنوعی
برای جابجایی سطرها به عنوان ستون ها در SQL Server، می توانید از دستور `PIVOT` استفاده کنید. در این حالت، شما می خواهید که تاریخ ها به عنوان سطرها و شیفت های کاری به عنوان ستون ها (A، B، C و D) نمایش داده شوند. در اینجا یک کویری نمونه برای این کار ارایه شده است:
SELECT
shamsiDate,
ISNULL([A], 'خیر') AS A,
ISNULL([B], 'خیر') AS B,
ISNULL([C], 'خیر') AS C,
ISNULL([D], 'خیر') AS D
FROM
Plane_Tbl
PIVOT
(
MAX(shiftDesc)
FOR shiftDesc IN ([A], [B], [C], [D])
) AS PivotTable
ORDER BY shamsiDate;
در این کویری:
- از `MAX(shiftDesc)` برای تعیین اینکه آیا شیفت های کاری وجود دارند یا خیر استفاده می شود.
- از `FOR shiftDesc IN ([A], [B], [C], [D])` برای مشخص کردن نام ستون ها استفاده می شود.
- در نهایت با `ISNULL` بررسی می شود که اگر شیفتی وجود نداشته باشد، 'خیر' نمایش داده شود.
این کویری در نهایت تاریخ ها را به عنوان سطر و شیفت ها را به عنوان ستون های مربوطه نمایش می دهد.
سلام
شما میتونید از دستور Pivot در Sql Server استفاده کنید. به صورت غیر Pivot هم می تونید این کار رو انجام بدید. من یک قطعه کد رو براتون قرار می دم.
select PD.shamsiDate,
IsNull((Select PD_A.ShiftDesc From Plane_Tbl PD_A Where ShiftDesc = 1 And PD_A.shamsiDate = pd.shamsiDate),'استراحت') As shiftA,
IsNull((Select PD_B.ShiftDesc From Plane_Tbl PD_B Where ShiftDesc = 2 And PD_B.shamsiDate = pd.shamsiDate),'استراحت') As shiftB,
IsNull((Select PD_C.ShiftDesc From Plane_Tbl PD_C Where ShiftDesc = 3 And PD_C.shamsiDate = pd.shamsiDate),'استراحت') As shiftC,
IsNull((Select PD_D.ShiftDesc From Plane_Tbl PD_D Where ShiftDesc = 4 And PD_D.shamsiDate = pd.shamsiDate),'استراحت') As shiftD
From Plane_Tbl PD Group By shamsiDate
به این صورت می تونید عمل جابه جایی سطر و ستون رو انجام بدید.
موفق باشید
این دستور یکم سرعتش از subquery بیشتر هستش فک کنم به کارتون بیاد
select id , [Date],
Count (case when [shift] = 'A' then 1 end) As [A],
Count (case when [shift] = 'B' then 1 end) As [B],
Count (case when [shift] = 'C' then 1 end) As [C],
Count (case when [shift] = 'D' then 1 end) As [D]
from TTT
Group by id , [Date]
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- اتصال دیتابیس اکسس به کریستال ریپوت
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )